package org.springframework.core.annotation;


import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 标识spring框架中那些顶级的概念抽象(比如BeanDefinition,BeanFactory,FactoryBean等),
 * 方便源码的阅读等
 */
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)
@Documented
public @interface Top {

	/**
	 * 被标记的类所处的spring的模块
	 */
	Spring m() default Spring.core;

	/**
	 * 对被标记的类进行功能,结构上的描述等
	 */
	String d() default "";

	enum Spring {
		core,
		beans,
		context,
		expression,
		tx,
		orm,
		jdbc,
		web,
		webflux,
		webmvc,
		websocket
	}

}
